#include <iostream>

using namespace std;

class B;
class C;
typedef C CC;

class A
{
private:
    int a = 5;
public:
    void print_a()
    {
        cout << a << endl;
    }
    friend B;           // 在C++11前，必须为friend class B;
    friend CC;          // C++11前，不能用别名
};

class B
{
public:
    void increment(A &t)
    {
        ++t.a;          // 访问类A的私有成员
    }
};

class C
{
public:
    void increment(A &t)
    {
        ++t.a;          // 访问类A的私有成员
    }
};

int main()
{
    A a;
    a.print_a();
    B b;
    C c;
    b.increment(a);
    a.print_a();
    c.increment(a);
    a.print_a();
}